↳ Prolog
↳ PrologToPiTRSProof
flat_in(tree(X, tree(Y, T1, T2), T3), Xs) → U2(X, Y, T1, T2, T3, Xs, flat_in(tree(Y, T1, tree(X, T2, T3)), Xs))
flat_in(tree(X, niltree, T), cons(X, Xs)) → U1(X, T, Xs, flat_in(T, Xs))
flat_in(niltree, nil) → flat_out(niltree, nil)
U1(X, T, Xs, flat_out(T, Xs)) → flat_out(tree(X, niltree, T), cons(X, Xs))
U2(X, Y, T1, T2, T3, Xs, flat_out(tree(Y, T1, tree(X, T2, T3)), Xs)) → flat_out(tree(X, tree(Y, T1, T2), T3), Xs)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
flat_in(tree(X, tree(Y, T1, T2), T3), Xs) → U2(X, Y, T1, T2, T3, Xs, flat_in(tree(Y, T1, tree(X, T2, T3)), Xs))
flat_in(tree(X, niltree, T), cons(X, Xs)) → U1(X, T, Xs, flat_in(T, Xs))
flat_in(niltree, nil) → flat_out(niltree, nil)
U1(X, T, Xs, flat_out(T, Xs)) → flat_out(tree(X, niltree, T), cons(X, Xs))
U2(X, Y, T1, T2, T3, Xs, flat_out(tree(Y, T1, tree(X, T2, T3)), Xs)) → flat_out(tree(X, tree(Y, T1, T2), T3), Xs)
FLAT_IN(tree(X, tree(Y, T1, T2), T3), Xs) → U21(X, Y, T1, T2, T3, Xs, flat_in(tree(Y, T1, tree(X, T2, T3)), Xs))
FLAT_IN(tree(X, tree(Y, T1, T2), T3), Xs) → FLAT_IN(tree(Y, T1, tree(X, T2, T3)), Xs)
FLAT_IN(tree(X, niltree, T), cons(X, Xs)) → U11(X, T, Xs, flat_in(T, Xs))
FLAT_IN(tree(X, niltree, T), cons(X, Xs)) → FLAT_IN(T, Xs)
flat_in(tree(X, tree(Y, T1, T2), T3), Xs) → U2(X, Y, T1, T2, T3, Xs, flat_in(tree(Y, T1, tree(X, T2, T3)), Xs))
flat_in(tree(X, niltree, T), cons(X, Xs)) → U1(X, T, Xs, flat_in(T, Xs))
flat_in(niltree, nil) → flat_out(niltree, nil)
U1(X, T, Xs, flat_out(T, Xs)) → flat_out(tree(X, niltree, T), cons(X, Xs))
U2(X, Y, T1, T2, T3, Xs, flat_out(tree(Y, T1, tree(X, T2, T3)), Xs)) → flat_out(tree(X, tree(Y, T1, T2), T3), Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
FLAT_IN(tree(X, tree(Y, T1, T2), T3), Xs) → U21(X, Y, T1, T2, T3, Xs, flat_in(tree(Y, T1, tree(X, T2, T3)), Xs))
FLAT_IN(tree(X, tree(Y, T1, T2), T3), Xs) → FLAT_IN(tree(Y, T1, tree(X, T2, T3)), Xs)
FLAT_IN(tree(X, niltree, T), cons(X, Xs)) → U11(X, T, Xs, flat_in(T, Xs))
FLAT_IN(tree(X, niltree, T), cons(X, Xs)) → FLAT_IN(T, Xs)
flat_in(tree(X, tree(Y, T1, T2), T3), Xs) → U2(X, Y, T1, T2, T3, Xs, flat_in(tree(Y, T1, tree(X, T2, T3)), Xs))
flat_in(tree(X, niltree, T), cons(X, Xs)) → U1(X, T, Xs, flat_in(T, Xs))
flat_in(niltree, nil) → flat_out(niltree, nil)
U1(X, T, Xs, flat_out(T, Xs)) → flat_out(tree(X, niltree, T), cons(X, Xs))
U2(X, Y, T1, T2, T3, Xs, flat_out(tree(Y, T1, tree(X, T2, T3)), Xs)) → flat_out(tree(X, tree(Y, T1, T2), T3), Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
FLAT_IN(tree(X, tree(Y, T1, T2), T3), Xs) → FLAT_IN(tree(Y, T1, tree(X, T2, T3)), Xs)
FLAT_IN(tree(X, niltree, T), cons(X, Xs)) → FLAT_IN(T, Xs)
flat_in(tree(X, tree(Y, T1, T2), T3), Xs) → U2(X, Y, T1, T2, T3, Xs, flat_in(tree(Y, T1, tree(X, T2, T3)), Xs))
flat_in(tree(X, niltree, T), cons(X, Xs)) → U1(X, T, Xs, flat_in(T, Xs))
flat_in(niltree, nil) → flat_out(niltree, nil)
U1(X, T, Xs, flat_out(T, Xs)) → flat_out(tree(X, niltree, T), cons(X, Xs))
U2(X, Y, T1, T2, T3, Xs, flat_out(tree(Y, T1, tree(X, T2, T3)), Xs)) → flat_out(tree(X, tree(Y, T1, T2), T3), Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
FLAT_IN(tree(X, tree(Y, T1, T2), T3), Xs) → FLAT_IN(tree(Y, T1, tree(X, T2, T3)), Xs)
FLAT_IN(tree(X, niltree, T), cons(X, Xs)) → FLAT_IN(T, Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
FLAT_IN(tree(X, tree(Y, T1, T2), T3)) → FLAT_IN(tree(Y, T1, tree(X, T2, T3)))
FLAT_IN(tree(X, niltree, T)) → FLAT_IN(T)
No rules are removed from R.
FLAT_IN(tree(X, niltree, T)) → FLAT_IN(T)
POL(FLAT_IN(x1)) = 2·x1
POL(niltree) = 0
POL(tree(x1, x2, x3)) = x1 + 2·x2 + x3
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ RuleRemovalProof
FLAT_IN(tree(X, tree(Y, T1, T2), T3)) → FLAT_IN(tree(Y, T1, tree(X, T2, T3)))
FLAT_IN(tree(X, tree(Y, T1, T2), T3)) → FLAT_IN(tree(Y, T1, tree(X, T2, T3)))
POL(FLAT_IN(x1)) = 2·x1
POL(tree(x1, x2, x3)) = 2 + 2·x1 + 2·x2 + x3
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ RuleRemovalProof
↳ QDP
↳ PisEmptyProof